#pragma once
#include "SystemPCH.h"
BEGIN_NAME_SPACE

template<class T>class Array
{
public:
	Array		( void );
	Array		( const int& );
	Array		( const Array<T>& );
	~Array		( void );
	Array<T>& operator = ( const Array<T>& );
	T& operator [] ( const int& );

public:
	void		Append			( const T& );
	int			Size			( void ) const;
	int			Capacity		( void ) const;
	void		Remove			( const int& );
	void		Clean			( void );
	void		SetCapacity		( const int& );
	void        SetElement		( const int&, const T& );
	T           GetElement      ( const int& ) const;
	T*			GetPtr		    ( void );
	const T*    GetPtr		    ( void ) const;

private:
	int size_;
	int capacity_;
	T*  pData_;
	static const int DefaultCapacity;
};

#include "Array.inl"

END_NAME_SPACE